# -*- coding: utf-8 -*-
# ===========================================
# @Time    : 2021/11/23 9:36 
# @Author  : shutao
# @FileName: mae_base.py
# @remark  : 
# 
# @Software: PyCharm
# Github 　： https://github.com/NameLacker
# ===========================================

import os
from typing import Dict

import paddle
from paddle.fluid import Layer

from modules.utils import LRScheduler
from modules.exp.base_exp import BaseExp


class Exp(BaseExp):
    """The experiment of MAE image reconstruction"""

    def __init__(self):
        super().__init__()

    def get_model(self) -> Layer:
        pass

    def get_data_loader(self, batch_size: int) -> Dict[str, paddle.io.DataLoader]:
        pass

    def get_loss_function(self, preds, loss, **kwargs) -> paddle.Tensor:
        pass

    def get_optimizer(self, lr: LRScheduler, parameters: paddle.nn.Layer.parameters) -> paddle.optimizer.Optimizer:
        pass

    def get_lr_scheduler(self, lr: float, iters_per_epoch: int, **kwargs) -> LRScheduler:
        pass

    def get_training_subject(self, data, loss_func):
        pass

    def get_evaluator(self, batch_size: int):
        pass

    def eval(self, model, evaluator, weights):
        pass
